package TestesAutomatizados;

import static org.junit.Assert.assertEquals;

import java.util.Arrays;

import org.junit.Assume;
import org.junit.BeforeClass;
import org.junit.experimental.theories.DataPoints;
import org.junit.experimental.theories.Theories;
import org.junit.experimental.theories.Theory;
import org.junit.runner.RunWith;

import Controlador.ObterComissoesAcumulado;

@RunWith(Theories.class)
public class TesteValidacaoMesesEscolhidos {
	
	static class DataVenda{
		private int mesVenda;
		private int anoVenda;
		private int mesInicial;
		private int mesFinal;
		private int anoFinal;
		private int anoInicial;
		private boolean resultado;
		
		public DataVenda(int mesVenda, int anoVenda, int mesInicial, int anoInicial, int mesFinal, int anoFinal, boolean resultado){
			this.mesVenda = mesVenda;
			this.anoVenda = anoVenda;
			this.mesInicial = mesInicial;
			this.mesFinal = mesFinal;
			this.anoFinal = anoFinal;
			this.anoInicial = anoInicial;
			this.resultado = resultado;
		}
	}
	
	private static DataVenda[] dadosDataVenda;
	
	@BeforeClass
	public static void gerarDataPoints(){
		dadosDataVenda = new DataVenda[] {
				new DataVenda(1, 2014, 1, 2013, 1, 2015, true),
				new DataVenda(1, 2014, 1, 2014, 1, 2014, true),
				new DataVenda(1, 2014, 1, 2014, 1, 2013, false),
				new DataVenda(1, 2014, 2, 2014, 2, 2014, false),
				new DataVenda(1, 1, 1,1, 1, 1, true)
				};
	}
	
	@DataPoints
	public static DataVenda[] dados(){
		return dadosDataVenda;
	}
	
	@Theory
	public void testarVerificaAnoMesValidos(DataVenda dataVenda){
		Assume.assumeTrue(Arrays.asList(dadosDataVenda).contains(dataVenda));
		ObterComissoesAcumulado obterComissoes = new ObterComissoesAcumulado(null);
		obterComissoes.setMesInicialEscolhido(dataVenda.mesInicial);
		obterComissoes.setMesFinalEscolhido(dataVenda.mesFinal);
		obterComissoes.setAnoFinalEscolhido(dataVenda.anoFinal);
		obterComissoes.setAnoInicialEscolhido(dataVenda.anoInicial);
		assertEquals(obterComissoes.verificaAnoMesValidos(dataVenda.mesVenda, dataVenda.anoVenda), dataVenda.resultado);
		assertEquals(true,true);
	}
	
}
